package com.bbs.toutiao.controller.client;

import cn.hutool.core.lang.Assert;
import com.bbs.toutiao.exception.BaseException;
import com.bbs.toutiao.exception.ExceptionEnum;
import com.bbs.toutiao.service.admin.impl.UploadServiceImpl;
import com.bbs.toutiao.service.client.impl.ClientUserServiceImpl;
import com.bbs.toutiao.utils.MsgCodeUtil;
import com.bbs.toutiao.utils.Result;
import com.bbs.toutiao.vo.client.UserPhonePasswordVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.websocket.server.PathParam;

/**
 * 描述: 客户端修改账户安全信息
 * 作者： zhangBin
 * 时间： 2024/2/2 18:41
 * 版本： 1.0
 */

@Slf4j
@RestController
@RequestMapping("/api/updateUser")
public class ClientUpdateUserController {

    @Resource
    ClientUserServiceImpl userService;

    @Resource
    UploadServiceImpl uploadService;


    /**
     * 前台用户修改密码
     *
     * @param lrVo
     * @param token
     * @return {@link Result}
     */
    @PostMapping("/updatePassword")
    public Result updatePassword(@RequestBody UserPhonePasswordVo lrVo, @RequestHeader String token) {
        MsgCodeUtil.startCleanerCache(); //开启清理
        try {
            //先要判断手机号和短信验证码是否为空
            Assert.notBlank(lrVo.getPhone());
            Assert.notBlank(lrVo.getPassword());
            Assert.notBlank(lrVo.getCaptcha());
        } catch (Exception e) {
            throw new BaseException(ExceptionEnum.NOT_NULL);
        }
        if (!MsgCodeUtil.booleanCode(lrVo.getPhone(), lrVo.getCaptcha())) {
            return Result.error(400, "验证码错误");
        }
        int i = userService.updateUserPassword(lrVo, token);
        if (i > 0) {
            return Result.success("修改成功");
        } else {
            return Result.error(400, "修改失败");
        }
    }


    /**
     * 修改用户手机号
     *
     * @param lrVo
     * @param token
     * @return
     */
    @PostMapping("/updatePhone")
    public Result updateUserPhone(@RequestBody UserPhonePasswordVo lrVo, @RequestHeader String token) {
        MsgCodeUtil.startCleanerCache(); //开启清理
        try {
            //先要判断手机号和短信验证码是否为空
            Assert.notBlank(lrVo.getPhone());
            Assert.notBlank(lrVo.getCaptcha());
        } catch (Exception e) {
            throw new BaseException(ExceptionEnum.NOT_NULL);
        }
        if (!MsgCodeUtil.booleanCode(lrVo.getPhone(), lrVo.getCaptcha())) {
            return Result.error(400, "验证码错误");
        }
        int i = userService.updateUserPhone(lrVo, token);
        if (i > 0) {
            return Result.success("修改成功");
        }
        return Result.error(400, "修改失败");
    }


    /**
     * 用户修改背景
     *
     * @param token
     * @param image
     * @return
     */
    @GetMapping("/updateImage")
    public Result updateBackImg(@RequestHeader String token, @PathParam("image") String image) {
        try {
            Assert.notBlank(image);
        } catch (Exception e) {
            throw new BaseException(ExceptionEnum.NOT_NULL);
        }
        int i = userService.updateUserBackground(token, image);
        if (i < 0) {
            return Result.error(400, "修改失败");
        }
        return Result.success("修改成功");
    }

    //删除阿里云oss文件
    @GetMapping("/delete/file")
    public Result deleteFile(@PathParam("url") String url) {
        int i = uploadService.deleteFile(url);

        return i == 1 ? Result.success("删除成功") : Result.error(404, "没有该文件");
    }

}
